/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.jm.financeiro.view;

import br.jm.financeiro.base.eao.EaoException;
import br.jm.financeiro.entity.Modulo;
import br.jm.financeiro.entity.Usuario;
import br.jm.financeiro.entity.UsuarioModulo;
import br.jm.financeiro.sistema.eao.ModuloEao;
import java.io.IOException;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.servlet.http.HttpSession;

/**
 *
 * @author joao
 */
public class MenuBean {

    private boolean lAcesso;
    private String cMensagem = "Usuário sem Acesso a esse Módulo";
    private FacesContext ctx = FacesContext.getCurrentInstance();
    public HttpSession session;
    private Usuario usuarioAutenticado;
    private ModuloEao moduloJpa;
    private Modulo selectedModulo;
    boolean lReturn = false;

    public MenuBean() {
        moduloJpa = ModuloEao.getInstance();
        session = (HttpSession) ctx.getExternalContext().getSession(false);

        try {
            usuarioAutenticado = (Usuario) session.getAttribute("usuarioAutenticado");
        } catch (Exception ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage("Login Expirado ... Entre novamente no SAP!");
            try {
                ctx.getExternalContext().redirect(ctx.getExternalContext().getRequestContextPath() + "/login.jsf");
            } catch (IOException ex1) {
                //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex1);
            }
        }
    }

    public boolean islAcesso() {
        lAcesso = false;
        return lAcesso;
    }

    public void setlAcesso(boolean lAcesso) {
        this.lAcesso = lAcesso;
    }

    public boolean cliente() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(3);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean empreendimento() throws EaoException {

        try {
            lReturn = VerificaUsuarioAcesso(2);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean cidade() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(8);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean bairro() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(7);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean logradouro() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(6);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean categoria() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(4);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public void moeda(ActionEvent actionEvent) {
        try {
            ctx.getExternalContext().redirect(ctx.getExternalContext().getRequestContextPath() + "/cadastros/moeda.jsf");
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
    }

    public void banco(ActionEvent actionEvent) {
        try {
            ctx.getExternalContext().redirect(ctx.getExternalContext().getRequestContextPath() + "/cadastros/banco.jsf");
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
    }

    public void tipoconta(ActionEvent actionEvent) {
        try {
            ctx.getExternalContext().redirect(ctx.getExternalContext().getRequestContextPath() + "/cadastros/tipoconta.jsf");
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
    }

    public void contabancaria(ActionEvent actionEvent) {
        try {
            ctx.getExternalContext().redirect(ctx.getExternalContext().getRequestContextPath() + "/cadastros/contabancaria.jsf");
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
    }

    public void grupoconta(ActionEvent actionEvent) {
        try {
            ctx.getExternalContext().redirect(ctx.getExternalContext().getRequestContextPath() + "/cadastros/planosgrupos.jsf");
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
    }

    public void planoconta(ActionEvent actionEvent) {
        try {
            ctx.getExternalContext().redirect(ctx.getExternalContext().getRequestContextPath() + "/cadastros/planocontas.jsf");
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
    }

    public boolean departamento() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(5);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }
    
    public boolean diagnostico() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(40);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public void centrocusto(ActionEvent actionEvent) {
        try {
            ctx.getExternalContext().redirect(ctx.getExternalContext().getRequestContextPath() + "/cadastros/centrocusto.jsf");
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
    }

    public void tipodocumento(ActionEvent actionEvent) {
        try {
            ctx.getExternalContext().redirect(ctx.getExternalContext().getRequestContextPath() + "/cadastros/tipodocumento.jsf");
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
    }

    public boolean codigoddi() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(9);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean codigoddd() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(10);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public void formapagamento(ActionEvent actionEvent) {
        try {
            ctx.getExternalContext().redirect(ctx.getExternalContext().getRequestContextPath() + "/cadastros/formapagamento.jsf");
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
    }

    public void fornecedor(ActionEvent actionEvent) {
        addMessage("Modulo aceito");
        try {
            ctx.getExternalContext().redirect(ctx.getExternalContext().getRequestContextPath() + "/cadastros/fornecedor.jsf");
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
    }

    public void contareceber(ActionEvent actionEvent) {
        addMessage("Modulo aceito");
        try {
            ctx.getExternalContext().redirect(ctx.getExternalContext().getRequestContextPath() + "/movimentos/conta_receber.jsf");
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
    }

    public void tipobaixa(ActionEvent actionEvent) {
        addMessage("Modulo aceito");
        try {
            ctx.getExternalContext().redirect(ctx.getExternalContext().getRequestContextPath() + "/cadastros/tipobaixa.jsf");
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
    }

    public boolean processo_carga() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(52);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }
    
    public boolean processo() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(12);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean relatorio_processo() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(14);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }
    
    public boolean assunto() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(57);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public void home() throws IOException {
        ctx = FacesContext.getCurrentInstance();

        ctx.getExternalContext().redirect(ctx.getExternalContext().getRequestContextPath() + "/home.jsf");
    }
    
    public void ajuda() throws IOException {
        ctx = FacesContext.getCurrentInstance();

        ctx.getExternalContext().redirect(ctx.getExternalContext().getRequestContextPath() + "/templates/menuajuda.jsf");
    }

    public void addMessage(String summary) {
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, summary, null);
        FacesContext.getCurrentInstance().addMessage(null, message);
    }

    public boolean usuario() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(16);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean endereco() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(17);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean fornecedor() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(21);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean telefone() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(18);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean financeiro() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(19);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean diversos() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(20);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean banco() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(23);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean moeda() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(24);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean tipoconta() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(25);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean contabancaria() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(26);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean centrocusto() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(27);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean formapagamento() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(28);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean tipobaixa() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(29);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean modeloemail() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(30);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean modeloprocuracao() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(31);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean tipodocumento() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(32);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean listadocumentos() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(33);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean etapa() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(34);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean modeloproposta() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(35);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean movimentofinanceiro() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(36);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean contasreceber() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(37);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean contaspagar() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(38);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean controlebancario() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(39);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean relAcompanhamento() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(22);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }
    
    public boolean relClassificao() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(53);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }
    
    public boolean relFinanceiro() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(55);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean cadastros() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(1);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean movimentos() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(11);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean relatorios() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(13);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }

    public boolean administrativo() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(15);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }
    
    public boolean proposta_inicial() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(41);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }
    
    public boolean proposta() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(54);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }
    
    public boolean proposta_elaboracao() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(42);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }
    
    public boolean proposta_case() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(43);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }
    
    public boolean proposta_lista() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(44);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }
    
    public boolean proposta_estudo_inicial() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(45);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }
    
    public boolean proposta_orgao() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(46);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }
    
    public boolean proposta_valor() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(47);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }
    
    public boolean proposta_status() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(48 );
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }
    
    public boolean empresa() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(49);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }
    
    public boolean proposta_encerra() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(50);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }
    
    public boolean ordemservico() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(51);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }
    
    public boolean os_cancela() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(56);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }
    
    public boolean exportarexcel() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(60);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }
    
    public boolean transferencia() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(58);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }
    
    public boolean log() throws EaoException {
        try {
            lReturn = VerificaUsuarioAcesso(59);
        } catch (IOException ex) {
            //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex);
            addMessage(cMensagem);
        }
        return lReturn;
    }
    
    public void VerificaUsuario(int nIdModulo) throws IOException, EaoException {
        UsuarioModulo usuarioTemp = new UsuarioModulo();
        selectedModulo = new Modulo();
        session = (HttpSession) ctx.getExternalContext().getSession(false);
        usuarioAutenticado = (Usuario) session.getAttribute("usuarioAutenticado");

        if (usuarioAutenticado == null) {
            try {
                ctx.getExternalContext().redirect(ctx.getExternalContext().getRequestContextPath() + "/login.jsf");
            } catch (IOException ex1) {
                //Logger.getLogger(MenuBean.class.getName()).log(Level.SEVERE, null, ex1);
            }
        } else {

            if (usuarioAutenticado.getTipUsuario().equals("Administrador")) {
                this.lAcesso = true;

                selectedModulo = moduloJpa.getPorId(nIdModulo);
                usuarioTemp.setModulo(selectedModulo);
            } else if (usuarioAutenticado.getTipStatus().equals("Desativado")) {
                this.lAcesso = false;
            } else {
                List<UsuarioModulo> listUsuarioModulo = usuarioAutenticado.getUsuarioModuloList();

                for (int i = 0; i < listUsuarioModulo.size(); i++) {
                    usuarioTemp = listUsuarioModulo.get(i);
                    if (usuarioTemp.getModulo().getIdModulo() == nIdModulo) {
                        this.lAcesso = true;
                        break;
                    } else {
                        this.lAcesso = false;
                    }
                }
            }

            if (this.lAcesso) {
                String cEndereco = ctx.getExternalContext().getRequestContextPath() + usuarioTemp.getModulo().getDscPagina();
                cEndereco = "http://192.168.1.1:8080/" + cEndereco;
                ctx.getExternalContext().redirect(cEndereco);
            } else {
                addMessage("ATENÇÃO ... Usuário não tem Direito de Acesso a esse Modulo!");
            }
        }
    }

    public boolean VerificaUsuarioAcesso(int nIdModulo) throws IOException, EaoException {
        ctx = FacesContext.getCurrentInstance();
        UsuarioModulo usuarioTemp = new UsuarioModulo();
        selectedModulo = new Modulo();
        session = (HttpSession) ctx.getExternalContext().getSession(false);

        try {
            usuarioAutenticado = (Usuario) session.getAttribute("usuarioAutenticado");
        } catch (Exception ex) {
            usuarioAutenticado = null;
        }
        if (usuarioAutenticado == null) {
            try {
                lAcesso = false;
                ctx.getExternalContext().redirect(ctx.getExternalContext().getRequestContextPath() + "/index.jsp");
            } catch (Exception ex1) {
                addMessage("ATENÇÃO ... Sessão do Usuário Expirada ... Entre Novamente no Sistema!");
            }
        } else {

            if (usuarioAutenticado.getTipUsuario().equals("Administrador")) {
                this.lAcesso = true;

                //selectedModulo = moduloJpa.getPorId(nIdModulo);
                //usuarioTemp.setModulo(selectedModulo);
            } else if (usuarioAutenticado.getTipStatus().equals("Desativado")) {
                this.lAcesso = false;
            } else {
                List<UsuarioModulo> listUsuarioModulo = usuarioAutenticado.getUsuarioModuloList();

                for (int i = 0; i < listUsuarioModulo.size(); i++) {
                    usuarioTemp = listUsuarioModulo.get(i);
                    if (usuarioTemp.getModulo().getIdModulo() == nIdModulo) {
                        this.lAcesso = true;
                        break;
                    } else {
                        this.lAcesso = false;
                    }
                }
            }
        }
        return lAcesso;
    }
}
